﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Giaiphongmatbang.BLL;
using Giaiphongmatbang.DataModel;
using System.Text;
using System.Reflection;
using System.IO;
using COMExcel = Microsoft.Office.Interop.Excel;



namespace Giaiphongmatbang
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        Giaiphongmatbang.DataAccess.GPMBDataContext datacontext = new DataAccess.GPMBDataContext();
        QLGPMBEntities db = new QLGPMBEntities();

        public void ExportToExcel(List<HouseHold> household, int projectid)
        {
            object objMissing = System.Reflection.Missing.Value;
            Project p = new ProjectsRepository().GetByID(projectid);

            #region Khai báo dữ liệu
            var Itree = datacontext.uspInventoryTree(projectid).ToArray();
            var Ihouse = datacontext.uspInventoryHouseHold(projectid).ToArray();
            var Igrave = datacontext.uspInventoryGrave(projectid).ToArray();
            var Iland = datacontext.uspInventoryLand(projectid).ToArray();
            var Ibuild = datacontext.uspInventoryBuilding(projectid).ToArray();
            var Ijob = datacontext.uspSupportJob(projectid).ToArray();
            var Imove = datacontext.uspSupportMove(projectid).ToArray();
            var Iother = datacontext.uspSupportOther(projectid).ToArray();
            var Irent = datacontext.uspSupportRent(projectid).ToArray();
            var Istabilize = datacontext.uspSupportStabilize(projectid).ToArray();
            #endregion

            //Khoi dong excel
            COMExcel.Application exApp = new COMExcel.Application();


            //them 1 file temp xls
            COMExcel.Workbook exBook = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksheet);

            //string path = "/Export/Bao-Cao.xls";
            //COMExcel.Workbook exBook = exApp.Workbooks.Open(Server.MapPath(path), 0, false, 5, "", "", false, COMExcel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);


            //lay sheet 1
            COMExcel.Worksheet exSheet = (COMExcel.Worksheet)exBook.Worksheets[1];

            exSheet.Name = "Chi-Tiet-Den-Bu";
            exSheet.PageSetup.PaperSize = COMExcel.XlPaperSize.xlPaperA4;
            exSheet.PageSetup.Orientation = COMExcel.XlPageOrientation.xlLandscape;
            exSheet.PageSetup.RightHeader = DateTime.Now.ToString();
            exSheet.PageSetup.FirstPageNumber = 1;
            exSheet.PageSetup.TopMargin = 180;
            exSheet.PageSetup.LeftMargin = 100;

            exSheet.DisplayPageBreaks = true;
            exSheet.Cells.Font.Name = "Times New Roman";
            exSheet.Cells.Font.Size = 11;
            exSheet.Cells.VerticalAlignment = COMExcel.XlVAlign.xlVAlignCenter;
            exSheet.Rows.Cells.WrapText = true;

            COMExcel.Range r = (COMExcel.Range)exSheet.Cells[1, 1];
            r.ColumnWidth = 30;

            COMExcel.Range r12 = (COMExcel.Range)exSheet.Cells[1, 2];
            r12.ColumnWidth = 18;

            COMExcel.Range r13 = (COMExcel.Range)exSheet.Cells[1, 3];
            r13.ColumnWidth = 12;

            COMExcel.Range r14 = (COMExcel.Range)exSheet.Cells[1, 4];
            r14.ColumnWidth = 10;

            COMExcel.Range r15 = (COMExcel.Range)exSheet.Cells[1, 5];
            r15.ColumnWidth = 13;

            COMExcel.Range r18 = (COMExcel.Range)exSheet.Cells[1, 8];
            r18.ColumnWidth = 13;

            int i = 1;
            int j = 1;

            foreach (var item in household)
            {
                HouseHold h = item;
                Table tree = getTree(item.CMND, projectid, Itree);
                Table build = getBuilding(item.CMND, projectid, Ibuild);
                Table grave = getGrave(item.CMND, projectid, Igrave);
                Table house = getHouse(item.CMND, projectid, Ihouse);
                Table land = getLand(item.CMND, projectid, Iland);
                Table support = getSupport(item.CMND, projectid, Ijob, Imove, Iother, Irent, Istabilize);

                #region title
                exSheet.Cells[i, 1] = "Cộng hòa xã hội chủ nghĩa Việt Nam";
                r = (COMExcel.Range)exSheet.Cells[i, 1];

                r.HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
                i++;
                exSheet.Cells[i, 1] = "Độc Lập tự do hạnh phúc";
                r = (COMExcel.Range)exSheet.Cells[i, 1];
                r.HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
                i++;
                #endregion

                i += 2;
                #region Thông tin chủ hộ nằm trong dự án

                exSheet.Cells[i, 1] = "Thống kê tài sản thiệt hại và hỗ trợ";
                r = (COMExcel.Range)exSheet.Cells[i, 1];
                r.Font.Bold = true;
                i++;

                exSheet.Cells[i, 1] = "Thông tin chủ hộ";
                r = (COMExcel.Range)exSheet.Cells[i, 1];
                r.Font.Bold = true;
                i++;

                exSheet.Cells[i, 1] = "Tên chủ hộ: " + h.FullName.ToString();
                r = (COMExcel.Range)exSheet.Cells[i, 1];
                r.Font.Bold = true;
                i++;

                exSheet.Cells[i, 1] = "Chứng minh thư: " + h.CMND.ToString();
                r = (COMExcel.Range)exSheet.Cells[i, 1];
                r.Font.Bold = true;
                i++;

                if (h.Address != null)
                {
                    exSheet.Cells[i, 1] = "Địa chỉ: " + h.Address.ToString();
                    r = (COMExcel.Range)exSheet.Cells[i, 1];
                    r.Font.Bold = true;
                    i++;
                }

                if (h.PhoneNumber != null)
                {
                    exSheet.Cells[i, 1] = "Số điện thoại: " + h.PhoneNumber.ToString();
                    r = (COMExcel.Range)exSheet.Cells[i, 1];
                    r.Font.Bold = true;
                    i++;
                }

                exSheet.Cells[i, 1] = "Tên dự án: " + p.ProjectName.ToString();
                r = (COMExcel.Range)exSheet.Cells[i, 1];
                r.Font.Bold = true;
                i++;
                i++;
                #endregion

                exSheet.Cells[i, 1] = "Thống kê tài sản thiệt hại";
                r = (COMExcel.Range)exSheet.Cells[i, 1];
                r.Font.Bold = true;
                i++;

                //Đền bù cây cối hoa màu
                #region Đền bù cây cối hoa màu
                int totalrow = tree.Rows.Count;
                if (totalrow > 1)
                {
                    for (int k = 0; k < totalrow; k++)
                    {
                        for (int l = 0; l < 5; l++)
                        {
                            exSheet.Cells[i, j] = tree.Rows[k].Cells[l].Text;
                            r = exSheet.Cells[i, j];
                            r.Borders.LineStyle = 1;
                            if (k == 0)
                            {

                                r.Font.Bold = true;
                            }
                            j++;
                        }
                        j = 1;
                        i++;
                    }
                    i++;
                }
                #endregion

                //Đền bù nhà cửa
                #region Đền bù nhà cửa và công trình xây dựng
                totalrow = house.Rows.Count;
                if (totalrow > 1)
                {
                    for (int k = 0; k < house.Rows.Count; k++)
                    {
                        for (int l = 0; l < 5; l++)
                        {
                            exSheet.Cells[i, j] = house.Rows[k].Cells[l].Text;
                            r = exSheet.Cells[i, j];
                            r.Borders.LineStyle = 1;
                            if (k == 0)
                            {
                                r.Font.Bold = true;
                            }
                            j++;
                        }
                        j = 1;
                        i++;
                    }
                    i++;
                }
                #endregion

                //Đền bù mồ mả
                #region Đền bù mồ mả
                totalrow = grave.Rows.Count;
                if (totalrow > 1)
                {
                    for (int k = 0; k < grave.Rows.Count; k++)
                    {
                        for (int l = 0; l < 5; l++)
                        {
                            exSheet.Cells[i, j] = grave.Rows[k].Cells[l].Text;
                            r = exSheet.Cells[i, j];
                            r.Borders.LineStyle = 1;
                            if (k == 0)
                            {
                                r.Font.Bold = true;
                            }
                            j++;
                        }
                        j = 1;
                        i++;
                    }
                    i++;
                }
                #endregion

                //Đề bù công trình xây dựng
                #region Đề bù công trình xây dựng
                totalrow = build.Rows.Count;
                if (totalrow > 1)
                {
                    for (int k = 0; k < build.Rows.Count; k++)
                    {
                        for (int l = 0; l < 5; l++)
                        {
                            exSheet.Cells[i, j] = build.Rows[k].Cells[l].Text;
                            r = exSheet.Cells[i, j];
                            r.Borders.LineStyle = 1;
                            if (k == 0)
                            {
                                r.Font.Bold = true;
                            }
                            j++;
                        }
                        j = 1;
                        i++;
                    }
                    i++;
                }
                #endregion

                //Đền bù đất
                #region Đền bù đất
                totalrow = land.Rows.Count;
                if (totalrow > 1)
                {
                    for (int k = 0; k < land.Rows.Count; k++)
                    {
                        for (int l = 0; l < 8; l++)
                        {
                            exSheet.Cells[i, j] = land.Rows[k].Cells[l].Text;
                            r = exSheet.Cells[i, j];
                            r.Borders.LineStyle = 1;
                            if (k == 0)
                            {
                                r.Font.Bold = true;
                            }
                            j++;
                        }
                        j = 1;
                        i++;
                    }
                    i++;
                }
                #endregion

                //Hỗ trợ
                #region Danh sách các loại hỗ trợ
                totalrow = support.Rows.Count;
                if (totalrow > 1)
                {
                    exSheet.Cells[i, 1] = "Các loại hỗ trợ được hưởng";
                    r = (COMExcel.Range)exSheet.Cells[i, 1];
                    r.Font.Bold = true;
                    i++;
                    for (int k = 0; k < support.Rows.Count; k++)
                    {
                        for (int l = 0; l < 5; l++)
                        {
                            exSheet.Cells[i, j] = support.Rows[k].Cells[l].Text;
                            r = exSheet.Cells[i, j];
                            r.Borders.LineStyle = 1;
                            if (k == 0)
                            {
                                r.Font.Bold = true;
                            }
                            j++;
                        }
                        j = 1;
                        i++;
                    }
                    i++;
                }
                #endregion

                COMExcel.Range ri9 = (COMExcel.Range)exSheet.Cells[i, 9];
                ri9.PageBreak = 1;
            }
            string filename = exSheet.Name + ".xls";
            string filepath = Server.MapPath("/Export/" + exSheet.Name + ".xls");
            if (File.Exists(filepath))
            {
                File.Delete(filepath);
            }
            exBook.SaveAs((object)(filepath), objMissing, objMissing, objMissing, objMissing, objMissing,
                COMExcel.XlSaveAsAccessMode.xlNoChange, objMissing, objMissing, objMissing, objMissing, objMissing);
            exApp.Visible = false;
            //exBook.SaveAs("D:\\file.xls", COMExcel.XlFileFormat.xlWorkbookNormal,
            //    null, null, false, false,
            //    COMExcel.XlSaveAsAccessMode.xlExclusive,
            //    false, false, false, false, false);
            exBook.Close();
            exApp.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(exBook);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(exApp);

            Response.Clear();
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
            Response.WriteFile(filepath);
            Response.End();
        }

        //public void ExportToExcel(string cmnd, int projectid)
        //{
        //    Table tree = getTree(cmnd, projectid);
        //    Table build = getBuilding(cmnd, projectid);
        //    Table grave = getGrave(cmnd, projectid);
        //    Table house = getHouse(cmnd, projectid);
        //    Table land = getLand(cmnd, projectid);
        //    Table support = getSupport(cmnd, projectid);

        //    //Khoi dong excel
        //    COMExcel.Application exApp = new COMExcel.Application();
        //    //them 1 file temp xls
        //    COMExcel.Workbook exBook = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksheet);
        //    //lay sheet 1
        //    COMExcel.Worksheet exSheet = (COMExcel.Worksheet)exBook.Worksheets[1];
        //    exSheet.Cells.Font.Name = "Times New Roman";
        //    exSheet.Cells.Font.Size = 11;
        //    exSheet.PageSetup.Orientation = COMExcel.XlPageOrientation.xlLandscape;


        //    HouseHold h = new HouseHoldRepository().GetByCMND(cmnd);
        //    Project p = new ProjectsRepository().GetByID(projectid);

        //    int i = 1;
        //    int j = 1;

        //    //Style cho sheet
        //    COMExcel.Range r = (COMExcel.Range)exSheet.Cells[1, 1];
        //    r.ColumnWidth = 28;
        //    COMExcel.Range r12 = (COMExcel.Range)exSheet.Cells[1, 2];
        //    r12.ColumnWidth = 17;
        //    COMExcel.Range r15 = (COMExcel.Range)exSheet.Cells[1, 5];
        //    r15.ColumnWidth = 15;
        //    COMExcel.Range r18 = (COMExcel.Range)exSheet.Cells[1, 8];
        //    r18.ColumnWidth = 15;

        //    #region Thông tin chủ hộ nằm trong dự án

        //    exSheet.Cells[i, 1] = "Thống kê tài sản thiệt hại và hỗ trợ";
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;

        //    exSheet.Cells[i, 1] = "Thông tin chủ hộ";
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;

        //    exSheet.Cells[i, 1] = "Tên chủ hộ: " + h.FullName.ToString();
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;

        //    exSheet.Cells[i, 1] = "Chứng minh thư: " + h.CMND.ToString();
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;

        //    exSheet.Cells[i, 1] = "Địa chỉ: " + h.Address.ToString();
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;

        //    exSheet.Cells[i, 1] = "Số điện thoại: " + h.PhoneNumber.ToString();
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;

        //    exSheet.Cells[i, 1] = "Tên dự án:" + p.ProjectName.ToString();
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;
        //    i++;
        //    #endregion

        //    exSheet.Cells[i, 1] = "Thống kê tài sản thiệt hại";
        //    r = (COMExcel.Range)exSheet.Cells[i, 1];
        //    r.Font.Bold = true;
        //    i++;

        //    //Đền bù cây cối hoa màu
        //    #region Đền bù cây cối hoa màu
        //    int totalrow = tree.Rows.Count;
        //    if (totalrow > 1)
        //    {
        //        for (int k = 0; k < totalrow; k++)
        //        {
        //            for (int l = 0; l < 5; l++)
        //            {
        //                exSheet.Cells[i, j] = tree.Rows[k].Cells[l].Text;
        //                if (k == 0)
        //                {
        //                    r = exSheet.Cells[i, j];
        //                    r.Font.Bold = true;
        //                }
        //                j++;
        //            }
        //            j = 1;
        //            i++;
        //        }
        //        i++;
        //    }
        //    #endregion

        //    //Đền bù nhà cửa
        //    #region Đền bù nhà cửa và công trình xây dựng
        //    totalrow = house.Rows.Count;
        //    if (totalrow > 1)
        //    {
        //        for (int k = 0; k < house.Rows.Count; k++)
        //        {
        //            for (int l = 0; l < 5; l++)
        //            {
        //                exSheet.Cells[i, j] = house.Rows[k].Cells[l].Text;

        //                if (k == 0)
        //                {
        //                    r = exSheet.Cells[i, j];
        //                    r.Font.Bold = true;
        //                }
        //                j++;
        //            }
        //            j = 1;
        //            i++;
        //        }
        //        i++;
        //    }
        //    #endregion

        //    //Đền bù mồ mả
        //    #region Đền bù mồ mả
        //    totalrow = grave.Rows.Count;
        //    if (totalrow > 1)
        //    {
        //        for (int k = 0; k < grave.Rows.Count; k++)
        //        {
        //            for (int l = 0; l < 5; l++)
        //            {
        //                exSheet.Cells[i, j] = grave.Rows[k].Cells[l].Text;
        //                if (k == 0)
        //                {
        //                    r = exSheet.Cells[i, j];
        //                    r.Font.Bold = true;
        //                }
        //                j++;
        //            }
        //            j = 1;
        //            i++;
        //        }
        //        i++;
        //    }
        //    #endregion

        //    //Đề bù công trình xây dựng
        //    #region Đề bù công trình xây dựng
        //    totalrow = build.Rows.Count;
        //    if (totalrow > 1)
        //    {
        //        for (int k = 0; k < build.Rows.Count; k++)
        //        {
        //            for (int l = 0; l < 5; l++)
        //            {
        //                exSheet.Cells[i, j] = build.Rows[k].Cells[l].Text;
        //                if (k == 0)
        //                {
        //                    r = exSheet.Cells[i, j];
        //                    r.Font.Bold = true;
        //                }
        //                j++;
        //            }
        //            j = 1;
        //            i++;
        //        }
        //        i++;
        //    }
        //    #endregion

        //    //Đền bù đất
        //    #region Đền bù đất
        //    totalrow = land.Rows.Count;
        //    if (totalrow > 1)
        //    {
        //        for (int k = 0; k < land.Rows.Count; k++)
        //        {
        //            for (int l = 0; l < 8; l++)
        //            {
        //                exSheet.Cells[i, j] = land.Rows[k].Cells[l].Text;
        //                if (k == 0)
        //                {
        //                    r = exSheet.Cells[i, j];
        //                    r.Font.Bold = true;
        //                }
        //                j++;
        //            }
        //            j = 1;
        //            i++;
        //        }
        //        i++;
        //    }
        //    #endregion

        //    COMExcel.Range ri9 = (COMExcel.Range)exSheet.Cells[i, 9];
        //    ri9.PageBreak = 1;

        //    exApp.Visible = true;
        //    System.Runtime.InteropServices.Marshal.ReleaseComObject(exBook);
        //    System.Runtime.InteropServices.Marshal.ReleaseComObject(exApp);
        //}
        #region Xuất báo cáo nhanh
        //public void export(string filename, string cmnd, int projectID)
        //{
        //    Table tree = getTree(cmnd, projectID);
        //    Table build = getBuilding(cmnd, projectID);
        //    Table grave = getGrave(cmnd, projectID);
        //    Table house = getHouse(cmnd, projectID);
        //    Table land = getLand(cmnd, projectID);
        //    Table support = getSupport(cmnd, projectID);
        //    Table info = getinfoHouseHold(cmnd, projectID);
        //    Table cl = new Table();
        //    TableRow row = new TableRow();
        //    row.Height = 20;
        //    cl.Rows.Add(row);

        //    int totalrow = 10;

        //    Response.Clear();
        //    Response.Buffer = true;
        //    //excel
        //    Response.ContentType = "application/csv";
        //    Response.Charset = "";
        //    Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
        //    Response.ContentEncoding = Encoding.Unicode;
        //    Response.BinaryWrite(Encoding.Unicode.GetPreamble());

        //    System.IO.StringWriter strWrite = new System.IO.StringWriter();
        //    System.Web.UI.HtmlTextWriter htmltext = new HtmlTextWriter(strWrite);


        //    Label lb2 = new Label();
        //    lb2.Text = "<h3>Thống kê tài sản bị thiệt hại<h3>";
        //    lb2.Font.Name = "Times New Roman";

        //    Label lb1 = new Label();
        //    lb1.Text = "<b>Danh sách tài sản thiệt hại</b>";
        //    lb1.Font.Name = "Times New Roman";

        //    lb2.RenderControl(htmltext);
        //    info.RenderControl(htmltext);
        //    cl.RenderControl(htmltext);
        //    lb1.RenderControl(htmltext);
        //    if (tree.Rows.Count > 1)
        //    {
        //        tree.RenderControl(htmltext);
        //        cl.RenderControl(htmltext);
        //        totalrow = totalrow + tree.Rows.Count + 1;
        //    }

        //    if (build.Rows.Count > 1)
        //    {
        //        build.RenderControl(htmltext);
        //        cl.RenderControl(htmltext);
        //        totalrow = totalrow + build.Rows.Count + 1;
        //    }

        //    if (grave.Rows.Count > 1)
        //    {
        //        grave.RenderControl(htmltext);
        //        cl.RenderControl(htmltext);
        //        totalrow = totalrow + grave.Rows.Count + 1;
        //    }

        //    if (house.Rows.Count > 1)
        //    {
        //        house.RenderControl(htmltext);
        //        cl.RenderControl(htmltext);
        //        totalrow = totalrow + house.Rows.Count + 1;
        //    }

        //    if (land.Rows.Count > 1)
        //    {
        //        land.RenderControl(htmltext);
        //        cl.RenderControl(htmltext);
        //        totalrow = totalrow + land.Rows.Count + 1;
        //    }

        //    Label lb3 = new Label();
        //    lb3.Text = "<b>Danh sách các loại hỗ trợ được hưởng</b>";
        //    lb3.Font.Name = "Times New Roman";
        //    lb3.RenderControl(htmltext);
        //    if (support.Rows.Count > 1)
        //    {
        //        support.RenderControl(htmltext);
        //        totalrow = totalrow + support.Rows.Count;
        //    }

        //    int r = 29 - (totalrow % 29);
        //    for (int i = 0; i < r - 1; i++)
        //    {
        //        cl.RenderControl(htmltext);
        //    }

        //    Label lbday = new Label();
        //    lbday.Text = "<b>" + DateTime.Now.ToShortDateString() + "</b>";
        //    lbday.RenderControl(htmltext);

        //    Response.Write(strWrite.ToString());
        //    Response.End();
        //}
        #endregion

        public Table getinfoHouseHold(string cmnd, int projectID)
        {
            Table info = new Table();
            info.Font.Name = "Times New Roman";
            TableRow row;
            TableCell cell;

            HouseHold h = new HouseHoldRepository().GetByCMND(cmnd);
            Project p = new ProjectsRepository().GetByID(projectID);

            row = new TableRow();
            row.Width = 200;
            row.Font.Bold = true;
            row.VerticalAlign = VerticalAlign.Middle;

            cell = new TableCell();
            cell.Text = "Tên chủ hộ: " + h.FullName.ToString();
            row.Cells.Add(cell);
            info.Rows.Add(row);

            row = new TableRow();
            row.Width = 200;
            row.Font.Bold = true;
            row.VerticalAlign = VerticalAlign.Middle;

            cell = new TableCell();
            cell.Text = "Địa chỉ: " + h.Address.ToString();
            row.Cells.Add(cell);
            info.Rows.Add(row);

            row = new TableRow();
            row.Width = 200;
            row.Font.Bold = true;
            row.VerticalAlign = VerticalAlign.Middle;

            cell = new TableCell();
            cell.Text = "Số điện thoại: " + h.PhoneNumber.ToString();
            row.Cells.Add(cell);
            info.Rows.Add(row);

            row = new TableRow();
            row.Width = 200;
            row.Font.Bold = true;
            row.VerticalAlign = VerticalAlign.Middle;

            cell = new TableCell();
            cell.Text = "Số nhân khẩu: " + h.MemberCount.ToString();
            row.Cells.Add(cell);
            info.Rows.Add(row);

            row = new TableRow();
            row.Width = 200;
            row.Font.Bold = true;
            row.VerticalAlign = VerticalAlign.Middle;

            cell = new TableCell();
            cell.Text = "Tên dự án: " + p.ProjectName.ToString();
            row.Cells.Add(cell);
            info.Rows.Add(row);

            return info;
        }

        public Table getBuilding(string cmnd, int projectid, IEnumerable<Giaiphongmatbang.DataAccess.uspInventoryBuildingResult> build)
        {
            // var build = datacontext.uspInventoryBuilding(projectid);
            Table tb = new Table();
            TableCell cell;
            TableRow row;

            row = new TableRow();

            //header loại cây trồng
            cell = new TableCell();
            cell.Text = "Loại công trình xây dựng";
            row.Cells.Add(cell);

            //header DVT
            cell = new TableCell();
            cell.Text = "Đơn vị";
            row.Cells.Add(cell);

            //header giá
            cell = new TableCell();
            cell.Text = "Đơn giá(VNĐ)";
            row.Cells.Add(cell);

            //header số lượng
            cell = new TableCell();
            cell.Text = "Số lượng";
            row.Cells.Add(cell);

            //Header thành tiền
            cell = new TableCell();
            cell.Text = "Thành tiền(VNĐ)";
            row.Cells.Add(cell);
            //thêm row vào table

            tb.Rows.Add(row);

            var listbuild = build.Where(p => p.CMND == cmnd);

            //thêm content
            foreach (var item in listbuild)
            {
                row = new TableRow(); ;

                cell = new TableCell();
                cell.Text = getBuildParent(item.BuildingID);
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Unit.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Quantity.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = ((double)item.UnitPrice * item.Quantity).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            return tb;

        }

        public Table getGrave(string cmnd, int projectid, IEnumerable<Giaiphongmatbang.DataAccess.uspInventoryGraveResult> grave)
        {
            //var grave = datacontext.uspInventoryGrave(projectid);
            Table tb = new Table();
            TableCell cell;
            TableRow row;

            row = new TableRow();
            row.Font.Name = "Times New Roman";
            row.Font.Bold = true;

            //header loại cây trồng
            cell = new TableCell();
            cell.Text = "Loại mồ mả";
            row.Cells.Add(cell);

            //header DVT
            cell = new TableCell();
            cell.Text = "Đơn vị";
            row.Cells.Add(cell);

            //header giá
            cell = new TableCell();
            cell.Text = "Đơn giá";
            row.Cells.Add(cell);

            //header số lượng
            cell = new TableCell();
            cell.Text = "Số lượng";
            row.Cells.Add(cell);

            //Header thành tiền
            cell = new TableCell();
            cell.Text = "Thành tiền";
            row.Cells.Add(cell);
            //thêm row vào table

            tb.Rows.Add(row);
            //thêm content

            var listgrave = grave.Where(p => p.CMND == cmnd);

            foreach (var item in listgrave)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = getGraveParent(item.GraveID);
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Unit.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Quantity.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = ((double)item.UnitPrice * item.Quantity).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            return tb;

        }

        public Table getHouse(string cmnd, int projectid, IEnumerable<Giaiphongmatbang.DataAccess.uspInventoryHouseHoldResult> house)
        {
            //var house = datacontext.uspInventoryHouseHold(projectid);
            Table tb = new Table();
            TableCell cell;
            TableRow row;

            row = new TableRow();

            //header loại cây trồng
            cell = new TableCell();
            cell.Text = "Nhà ở và công trình xây dựng";
            row.Cells.Add(cell);

            //header DVT
            cell = new TableCell();
            cell.Text = "Đơn vị";
            row.Cells.Add(cell);

            //header giá
            cell = new TableCell();
            cell.Text = "Đơn giá";
            row.Cells.Add(cell);

            //header số lượng
            cell = new TableCell();
            cell.Text = "Số lượng";
            row.Cells.Add(cell);

            //Header thành tiền
            cell = new TableCell();
            cell.Text = "Thành tiền";
            row.Cells.Add(cell);
            //thêm row vào table

            var listhouse = house.Where(p => p.CMND == cmnd);

            tb.Rows.Add(row);
            //thêm content

            foreach (var item in listhouse)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = getHouseParent(item.HouseID);
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Unit.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Quantity.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = ((double)item.UnitPrice * item.Quantity).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            return tb;

        }

        public Table getTree(string cmnd, int projectid, IEnumerable<DataAccess.uspInventoryTreeResult> tree)
        {
            //var tree = datacontext.uspInventoryTree(projectid);
            Table tb = new Table();
            TableCell cell;
            TableRow row;

            row = new TableRow();

            //header loại cây trồng

            cell = new TableCell();
            cell.Text = "Cây cối hoa màu";
            row.Cells.Add(cell);

            //header DVT
            cell = new TableCell();
            cell.Text = "Đơn vị";
            row.Cells.Add(cell);

            //header giá
            cell = new TableCell();
            cell.Text = "Đơn giá";
            row.Cells.Add(cell);

            //header số lượng
            cell = new TableCell();
            cell.Text = "Số lượng";
            row.Cells.Add(cell);

            //Header thành tiền
            cell = new TableCell();
            cell.Text = "Thành tiền";
            row.Cells.Add(cell);
            //thêm row vào table

            tb.Rows.Add(row);

            var listtree = tree.Where(p => p.CMND == cmnd);

            //thêm content
            foreach (var item in listtree)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = getTreeParent(item.TreeID);
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Unit.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Quantity.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = ((double)item.UnitPrice * item.Quantity).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            return tb;

        }

        public Table getLand(string cmnd, int projectid, IEnumerable<Giaiphongmatbang.DataAccess.uspInventoryLandResult> land)
        {
            //var build = datacontext.uspInventoryLand(cmnd, projectid);
            Table tb = new Table();
            TableCell cell;
            TableRow row;

            row = new TableRow();

            //header loại đất
            cell = new TableCell();
            cell.Text = "Loại đất";
            row.Cells.Add(cell);

            //header vị trí
            cell = new TableCell();
            cell.Text = "Vị trí";
            row.Cells.Add(cell);

            //header thửa
            cell = new TableCell();
            cell.Text = "Thửa";
            row.Cells.Add(cell);

            //header tờ bản đồ
            cell = new TableCell();
            cell.Text = "Tờ bản đồ";
            row.Cells.Add(cell);

            //header DVT
            cell = new TableCell();
            cell.Text = "Đơn vị";
            row.Cells.Add(cell);

            //header giá
            cell = new TableCell();
            cell.Text = "Đơn giá";
            row.Cells.Add(cell);

            //header số lượng
            cell = new TableCell();
            cell.Text = "Số lượng";
            row.Cells.Add(cell);

            //Header thành tiền
            cell = new TableCell();
            cell.Text = "Thành tiền";
            row.Cells.Add(cell);

            //thêm row vào table
            tb.Rows.Add(row);

            var listland = land.Where(p => p.CMND == cmnd);

            //thêm content
            foreach (var item in listland)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = getLandParent(item.LandID);
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Position.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Plot.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.ofMap.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Unit.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Areas.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = ((double)item.UnitPrice * item.Areas).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            return tb;

        }

        public Table getSupport(string cmnd, int projectid, IEnumerable<DataAccess.uspSupportJobResult> job, IEnumerable<DataAccess.uspSupportMoveResult> move, IEnumerable<DataAccess.uspSupportOtherResult> other, IEnumerable<DataAccess.uspSupportRentResult> rent, IEnumerable<DataAccess.uspSupportStabilizeResult> stabilize)
        {
            Table tb = new Table();
            TableRow row;
            TableCell cell;

            row = new TableRow();

            cell = new TableCell();
            cell.Text = "Loại hỗ trợ";
            row.Cells.Add(cell);

            cell = new TableCell();
            cell.Text = "Đơn vị";
            row.Cells.Add(cell);

            cell = new TableCell();
            cell.Text = "Mức hỗ trợ";
            row.Cells.Add(cell);

            cell = new TableCell();
            cell.Text = "Số lượng";
            row.Cells.Add(cell);

            cell = new TableCell();
            cell.Text = "Thành tiền";
            row.Cells.Add(cell);

            tb.Rows.Add(row);

            //ho tro di chuyen
            #region Hỗ trợ di chuyển
            var listmove = move.Where(p => p.CMND == cmnd);
            foreach (var item in listmove)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = item.SupportName.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = "";
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.Cost).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = "";
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.Cost).ToString();
                row.Cells.Add(cell);
                tb.Rows.Add(row);
            }
            #endregion

            //Hỗ trợ nghề nghiệp
            #region Hỗ trợ nghề nghiệp
            var listjob = job.Where(p => p.CMND == cmnd);
            foreach (var item in listjob)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = item.SupportName.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = "";
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = "";
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            #endregion

            //hỗ trợ thuê nhà
            #region Hỗ trợ thuê nhà
            var listrent = rent.Where(p => p.CMND == cmnd);
            foreach (var item in rent)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = item.SupportName.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Unit.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.QuantityRent.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (item.QuantityRent * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            #endregion

            //Hỗ trợ ổn định đời sống
            #region Hỗ trợ ổn định đời sống
            var liststabilize = stabilize.Where(p => p.CMND == cmnd);
            foreach (var item in liststabilize)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = item.SupportName.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.Unit.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = item.QuantityStabilize.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (item.QuantityStabilize * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            #endregion

            //Hỗ trợ khác
            #region Hỗ trợ khác
            var listother = other.Where(p => p.CMND == cmnd);
            foreach (var item in listother)
            {
                row = new TableRow();

                cell = new TableCell();
                cell.Text = item.SupportName.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = "";
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = "";
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = (1 * (int)item.UnitPrice).ToString();
                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }
            #endregion

            return tb;
        }

        public string getBuildParent(int id)
        {
            Building b = new BuildingsRepository().GetByID(id);
            string name = b.BuildingName;
            while (b.ParentID != 0)
            {
                b = new BuildingsRepository().GetByID(b.ParentID);
                name = b.BuildingName + " - " + name;
            }
            return name;
        }

        public string getGraveParent(int id)
        {
            Grave g = new GravesRepository().GetByID(id);
            string parentname = g.GraveName;
            while (g.ParentID != 0)
            {
                g = new GravesRepository().GetByID(g.ParentID);
                parentname = g.GraveName + " - " + parentname;
            }
            return parentname;
        }

        public string getHouseParent(int id)
        {
            HouseType h = new HouseTypesRepository().GetByID(id);
            string name = h.Type;
            while (h.ParentID != 0)
            {
                h = new HouseTypesRepository().GetByID(h.ParentID);
                name = h.Type + " - " + name;
            }
            return name;
        }

        public string getTreeParent(int id)
        {
            Tree t = new TreesRepository().GetByID(id);
            string name = t.TreeName;
            while (t.ParentID != 0)
            {
                t = new TreesRepository().GetByID(t.ParentID);
                name = t.TreeName + " - " + name;
            }
            return name;
        }

        public string getLandParent(int id)
        {
            Land l = new LandRepository().GetByID(id);
            string name = l.LandName;
            while (l.ParentID != 0)
            {
                l = new LandRepository().GetByID(l.ParentID);
                name = l.LandName + " - " + name;
            }
            return name;
        }

        protected void btnExport_Click(object sender, EventArgs e)
        {
            string filepath = Server.MapPath("/Export/Chi-Tiet-Den-Bu.xls");
            List<HouseHold> h = new HouseHoldRepository().GetByProjectID(1);
            Exports ex = new Exports();
            ex.ExportToExcel(h, 1, filepath);
            Response.Clear();
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=Chi-Tiet-Den-Bu.xls");
            Response.WriteFile(filepath);
            Response.End();
        }
    }
}